
#ifndef SHELL_H_
#define SHELL_H_

#define SHELL_MAILBOX_SIZE 20000

#include <string>
#include <iostream>
#include "Mailer.h"
#include "Message.h"
#include "Mailbox.h"

using namespace std;

class Shell {
public:
	Shell();
	virtual ~Shell();
    void create_net(string filename);
    void start();
    void kill_node(int unigue_id);
    void revive_node(int unigue_id);
    void kill_all();
    void printRT(int unigue_id);
    void send_packet(Message *message);
    void run(int scheule_num);
    void exit();

    void show_menu();
    bool is_node_exists(int id);

    Mailer *getMailer() const
    {
        return _mailer;
    }

private:
	Mailbox*	_inbox;
	Mailer* 	_mailer;
	string 		_filename;

	void print_command_list();

};

#endif /* SHELL_H_ */
